package com.example.mvvmtest;

import android.os.AsyncTask;
import android.util.Log;

public class DownLoadTask extends AsyncTask<Integer,Integer,Integer> {
    // AsyncTask<Params, Progress, Result>
    // 后面尖括号内分别是参数（例子里是线程休息时间），进度(publishProgress用到)，返回值类型
    @Override
    protected void onPreExecute() {
        // 第一个执行方法
        Log.e("信息","onPreExecute");
        super.onPreExecute();
    }

    @Override
    protected Integer doInBackground(Integer... integers) { // 对应第一个参数
        // 第二个执行方法,onPreExecute()执行完后执行
        publishProgress(1,2,3);
        publishProgress(4,5,6);
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... progress) {    // 对应第二个参数
        //这个函数在doInBackground调用publishProgress时触发，虽然调用时只有一个参数
        //但是这里取到的是一个数组,所以要用progesss[0]来取值
        //第n个参数就用progress[n]来取值
        Log.e("信息","进度："+progress[0] + "，" + progress[1] + "，" + progress[2]);
        super.onProgressUpdate(progress);
    }

    @Override
    protected void onPostExecute(Integer result) {          // 对应第三个参数
        super.onPostExecute(result);
        Log.e("信息","onPostExecute");
    }
}
